/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * VentAyuda.java
 *
 * Created on 11-may-2010, 11:55:00
 */

package Blackjack;

import java.awt.Dimension;
import java.awt.Toolkit;

/**
 *
 * @author Red
 */
public class VentAyuda extends javax.swing.JFrame {

    private DriverHelp DH;
    
    public VentAyuda(DriverHelp DHH) {
        DH = DHH;
        initComponents();
        Toolkit tk = Toolkit.getDefaultToolkit();
        Dimension screenSize = tk.getScreenSize();
        int screenHeight = screenSize.height;
        int screenWidth = screenSize.width;
        this.setLocation((screenWidth - this.getWidth())/2, (screenHeight - this.getHeight())/2);
        this.setVisible(true);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Ayuda");
        setResizable(false);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jButton1.setText("Cerrar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jTextArea1.setColumns(20);
        jTextArea1.setEditable(false);
        jTextArea1.setRows(5);
        jTextArea1.setText("                             \n                                 Dinámica del juego\n\n      -------------------------------------------------------------------------\n\n\n\tEl juego del Blackjack es un juego de casino que consiste básicamente en\nir cogiendo cartas hasta acercarse lo máximo posible al valor 21, pero sin pasarse.\nEl juego se juega con la baraja inglesa, sin los comodines. \nLos valores de las cartas (independientemente del palo al que pertenezcan) tienen\nlos valores siguientes:\n\n\t-  Las cartas numeradas del 2 al 10 tienen el valor de su número.\n\t-  Las figuras (J, Q y K) tienen el valor 10.\n\t-  Los ases (A) valen 11 o 1, dependiendo de lo que le convenga más al \n           jugador en cada momento (si aún no se pasa de 21, vale 11, de lo\n           contrario, pasa a valer 1).\n\n\n\tEn una mano, los jugadores hacen sus apuestas por orden (el primero es el\njugador a la izquierda del croupier, el jugador de la banca), se reparten 2 cartas a\ncada jugador así como al croupier. La primera de las cartas del croupier se deja\nboca abajo y la segunda boca arriba. Lo primero que se hace es mirar si las 2\nprimeras cartas de los jugadores suman de entrada 21, lo cual se llama blackjack,\nen cuyo caso ganan la partida a no ser que el croupier también tenga el blackjack,\nen cuyo caso se considera empate y los jugadores se quedan con sus apuestas sin\nganar ni perder nada.\n\n\tSi la carta visible del croupier es un as, antes de que el croupier compruebe\nsi tiene blackjack, los jugadores pueden apostar un “seguro”, es decir, apostar\na que el croupier tendrá blackjack, en cuyo caso ganan el doble del valor del\nseguro (si el croupier no tiene blackjack, pierden el seguro).\nDespués de que los jugadores hayan comprobado si tienen blackjack y, eventualmente,\napostado los seguros, el crupier comprueba si tiene blackjack, en cuyo caso gana\nautomáticamente a todos los jugadores que a su vez no tengan blackjack, que pierden\nsus apuestas.\n\nLos blackjacks ganadores se pagan a una razón de 3:2 a los jugadores.\n\n\tSi el croupier no tiene blackjack, los jugadores que tampoco lo tengan hacen\nsus jugadas, en el mismo orden que el reparto de cartas. Las jugadas posibles son:\n\n\t-  Plantarse: el jugador acaba su jugada con las cartas que tiene y pasa el\n           turno al siguiente jugador.\n\n\t-  Pedir: se le da una carta más de la pila al jugador, la cual suma su valor\n           a las cartas de su jugada. Si no se ha pasado de 21, puede volver a pedir \n           una carta o plantarse, pero no puede realizar ningún otro tipo de jugada. \n\n\t-  Doblar: el jugador dobla su apuesta y coge una carta más, pero no puede \n           seguir la jugada.\n\n\t-  Dividir: si las dos cartas iniciales son pareja (mismo número o letra), \n           el jugador puede dividir la jugada en dos, separando las dos cartas y\n           añadiendo la apuesta inicial a la segunda carta. Se añade una carta de la\n           pila a cada una de las cartas divididas y se hacen jugadas independientes\n           sobre cada nuevo par de cartas (una después de acabar la otra), con lo\n           cual se puede ganar o perder en cada jugada independientemente de la otra.\n\n\n\tCuando todos los jugadores han finalizado sus jugadas, el croupier hace su\njugada, siguiendo unas normas estrictas: mientras el valor de sus cartas sea\nestrictamente menor que 17, tiene que pedir, cuando llega o supera los 17, se\nplanta automáticamente. Si el croupier se pasa de 21, todos los jugadores que no\nse hayan pasado, ganan, pero los que sí que lo hicieron pierden pase lo que pase\ncon la jugada  del croupier. Si el croupier no se pasa una vez acabada su jugada,\nlos jugadores que, sin pasarse, estén más cerca del 21 que el croupier ganan. Los\nque tienen el mismo valor empatan, y los que se han pasado o se han quedado más\nlejos del 21 que el croupier, pierden.\n\nLlegar a 21 a través de una jugada no se considera blackjack.\nCuando un  jugador gana sin hacer blackjack, gana la cantidad apostada. \nSi un jugador empata, no gana ni pierde nada, se queda con su apuesta.\nSi un jugador pierde, pierde lo apostado.\nCuando se acaba una mano, se puede empezar la siguiente.\n\n\n\tReglas adicionales de esta variante (mencionando los puntos más usuales donde\ndifieren las variantes, algunas dependen de la modalidad y el nivel de dificultad):\n\n-\tEl número de barajas con las que se juega y las reglas sobre cuando se\n        vuelven a barajar, dependen de la modalidad del y/o del nivel de dificultad\n        del juego.\n\n-\tEl croupier se planta en todos los 17s, incluidos los llamados 17s débiles\n        (aquellos que incluyen al menos un as).\n\n-\tNo se permite rendirse en una mano (perder la mitad de la apuesta y no jugar\n        la mano cuando al jugador le tocan unas cartas malas).\n\n-\tSe permite volver a dividir parejas (si las nuevas cartas forman pareja)\n        hasta tener un máximo de 4 jugadas independientes en la misma mano.\n\n-\tCuando se divide una pareja de ases, no se aplican restricciones a las\n        jugadas posibles.\n\n-\tCuando se divide, se permite doblar la apuesta en cada una de las jugadas\n        independientes.\n\n-\tSe puede doblar con cualquier valor inicial en la jugada.\n\n\nHay más reglas que definen la variante, pero ya se han mencionado anteriormente.\n\n\n\n\n                   Modalidades de juego y sus reglas particulares\n\n        -------------------------------------------------------------------\n\n\n\tEl programa permite jugar en tres modalidades, cuya diferencia principal son\nlas condiciones para que finalice la partida: “Con limite de dinero”, “Con límite de\nmanos” y “Modalidad libre”.\n\n\tEn todas las modalidades, el número de jugadores totales de la partida es\nconfigurable entre 1 y 8. También es configurable cuales de estos jugadores serán\ncontrolados por usuarios y cuales por la máquina.\nAdemás, cada modalidad tiene su propio ranking independiente, con un funcionamiento\ndiferente.\n\n\tCómo sus nombres sugieren, en las modalidades “Con limite de dinero” y “Con\nlimite demanos”, el juego termina cuando se alcanzan ciertas condiciones.\nEn ambas modalidades, se configura la cantidad de dinero con la que empiezan los\njugadores.\n\n\tEn el juego “Con límite de dinero”, el objetivo es ser el primer jugador en\nllegar a ganar una suma de dinero que sea múltiplo de la cantidad inicial, siendo el\nfactor por el que se multiplica (Coeficiente) un natural mayor o igual a 2 también\nconfigurable en cada partida.\nEl juego acaba cuando uno de los jugadores (ya sea usuario o máquina) alcanza la\ncantidad definida como objetivo y este jugador se proclama ganador.\nSi el ganador es un jugador controlado por el usuario, este y sólo este jugador\ntiene la posibilidad de entrar en el ranking, cuyas posiciones se calculan mediante\nun coeficiente que tiene en cuenta las manos que ha durado la partida y el factor\nque define la suma a alcanzar.\n\n\tEn el caso de la modalidad “Con limite de manos” el juego acaba cuando se han\njugado un numero de manos configurable.\nTodos los jugadores controlados por el usuario tienen la posibilidad de entrar en el\nranking, cuyas posiciones se calculan mediante un coeficiente que tiene en cuenta\ncuanto se ha ganado respecto a la suma inicial y la duración en manos de la partida.\n\n\tEn el caso de la “Modalidad libre”, el juego no acaba hasta que los usuarios\nasí lo decidan. \n\nLos jugadores usuario se podrán retirar de la partida en el momento en que lo deseen.\nLos jugadores usuario, cuando se retiran de la partida tienen opción de entrar en el\nranking, cuyas posiciones se calculan a partir de la suma total que el jugador tiene\nal acabar la partida.\n\n\tEn todas las modalidades, si los jugadores (tanto los controlados por el\nusuario como los que controla la máquina) pierden todo el dinero, se retiran\nautomáticamente y si en la mesa ya no queda ningún jugador jugando, la partida acaba.\n\n\n\n\n         Niveles de dificultad y comportamiento de los jugadores máquina\n\n     ---------------------------------------------------------------------------\n\n\n\tEn el programa, el nivel de dificultad se refleja en dos componentes\nindependientes configurables al inicio de la partida: el número de barajas con el\nque se juega y el comportamiento de los jugadores máquina.\n\n\tEn el juego del Blackjack, al tener una componente importante de azar, y por\nuna serie de factores, la banca tiene cierta ventaja probabilística sobre los\njugadores (como en la mayoría de juegos de casino).\nEsta ventaja probabilística se ve potenciada por la mayor incertidumbre y el mayor\nabanico de posibilidades que se da al jugar con un número de barajas mayor.\nEs por eso que en el programa se considerará el número de barajas con las que se \njuegan las partidas un factor de nivel de dificultad. Así, el programa permitirá \nconfigurar la partida para que se juegue con una, dos, cuatro u ocho barajas.\nCuando se juega con cualquier numero de barajas, las cartas que se hayan jugado en\nuna mano se devuelven directamente a la pila con la que se juega y se barajaran las\ncartas antes de cada mano (esto se hace en parte para impedir que los jugadores\nusuario utilicen técnicas de “contar cartas”, lo cual, al jugar con una baraja es\nconsiderablemente más fácil).\n\n\tEl comportamiento de los jugadores máquina es configurable, pudiendo elegir\nentre una serie de estrategias que definen el comportamiento de los jugadores.\nDichas estrategias se podrán crear y modificar por los usuarios a través de ficheros.\nPara este fin, hay una sintaxis y una semántica para crear reglas de comportamiento\nque definan las estrategias. \n\nPara más información acerca de las Estrategias, puede consultar los archivos\n\n\t-  SintaxisEstrategia.pdf: Contiene una explicación sobre la sintaxis de\n\t   las estrategias, con ejemplos básicos.\n\n\t-  ExplicacionCondicion.pdf: Contiene todas las condiciones y acciones\n           implementadas con una breve explicación sobre su funcionamiento.\n");
        jScrollPane1.setViewportView(jTextArea1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 564, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 523, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton1)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        // TODO add your handling code here:
        DH.retornarControl();
        this.dispose();
    }//GEN-LAST:event_jButton1ActionPerformed

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        // TODO add your handling code here:
        DH.retornarControl();
        this.dispose();
    }//GEN-LAST:event_formWindowClosing

   /**
    * @param args the command line arguments
    */
    /*public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new VentAyuda().setVisible(true);
            }
        });
    }*/

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    // End of variables declaration//GEN-END:variables

}
